
export default `
import { Workbook } from 'exceljs';
import squery from '@feidao/web/atom/nodejs/db/sql_query';
import format from '@feidao/web/atom/nodejs/dt/format';
import { systemid } from '../config';
import { ICommonParams } from '@feidao/service/interfaces';


export default async function atom(msg: ICommonParams, action_id: string, session_id: string, spaceid: string) {
	// 文档地址 https://github.com/guyonroche/exceljs#readme
	// 使用示例 https://feidao-edu.gitee.io/taoqf/201805020916.html

	// 创建一个工作薄实例
	const wb = new Workbook();

	// 可以添加工作薄的描述
	wb.creator = 'feidao';
	// creator: string;
	// lastModifiedBy: string;
	// created: Date;
	// modified: Date;
	// lastPrinted: Date;
	// Set workbook dates to 1904 date system
	// wb.properties.date1904 = true;
	// 	wb.views = [
	//   {
	//     x: 0, y: 0, width: 10000, height: 20000,
	//     firstSheet: 0, activeTab: 1, visibility: 'visible'
	//   }
	// ]

	// 添加一个页签，可以添加多个页签

	// 不输入名称则使用默认名称，可以针对该页签添加属性
	// options = {properties:{}, pageSetup:{}, views:[{}]}
	const dict1 = wb.addWorksheet('dict1');

	dict1.addRow(['合并单元格，横向合并', '', '', '', '']);
	// 将新插入的数据进行合并
	dict1.mergeCells('A1:E1');

	dict1.addRow(['第二行数据，合并单元格，竖向', 'b2', 'c', 'd', 'e']);
	dict1.addRow(['', 'b3', '', 'd', 'e']);
	dict1.addRow(['第四行数据', 'b4', '', 'd', 'e']);
	// 将第一列，第二行第三行合并
	dict1.mergeCells('A2:A3');
	// 将第三列，第二行第三行第四行合并
	dict1.mergeCells('C2:C4');
	// 合并单元格，必须有单元格，将需要合并的单元格的内容设置为''

	// 将第四列前四行单元格设置为下拉框，下拉框的内容为固定值
	const fcol = dict1.getColumn(4);
	fcol.eachCell((cell, celNumber) => {
		if (celNumber < 5) {
			cell.dataValidation = {
				type: 'list',
				formulae: [\`"编制内,聘用,外聘兼职"\`] // 注意格式
			};
		}
	});

	const sql = \`
SELECT
C.brand_name,
	C.brand_no,
	C.commodityid,
	C.commodity_name,
	C.creater
FROM
commodity C
	\`;
	const { exec, prepare } = await squery(action_id, session_id, spaceid, systemid);
	prepare(sql);
	const [res] = await exec();

	// 对数据做处理，符合添加行数据的规范
	const data = res.map((item) => {
		const arr = [];
		for (const key in item) {
			const v = item[key];
			arr.push(v);
		}
		return arr;
	});

	// 将数据放入表格中，查询出的数据字段名和表头中定义的key向对应
	dict1.addRows(data);

	// 将每一行数据行高设置为30，第二行的数据内容要居中，第3列的数据单元格设置边框

	dict1.eachRow((row, rowNumber) => {
		// 行高
		row.height = 30;
		if (rowNumber === 2) {
			row.eachCell((cell, colNumber) => {
				cell.alignment = {
					vertical: 'middle' // 上下居中
				}
			})
		}
	});

	const nocol = dict1.getColumn(3);
	nocol.eachCell((cell, celNumber) => {
		cell.border = {
			top: { style: 'thin' },
			left: { style: 'thin' },
			right: { style: 'thin' },
			bottom: { style: 'thin' }
		}
	})

	const buff = await wb.xlsx.writeBuffer();
	return {
		buff,
		content_type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
		attachment: '单元格合并.xlsx'
	};
}
`;
